 $ type sys$update:gksnotes.txt



                    VAX GKS/0b V1.2 Release Notes




1  GKS INSTALLATION NOTES

VAX GKS/0b V1.2 can be installed using  the  V1.1  installation  guide
"Installing VAX GKS/0b".  There are a few differences between the V1.1
installation and the V1.2 installation.  Please read the  sections  on
Prerequisites  For  Installation and Differences Between V1.1 and V1.2
Installation in this release notes for further details.



1.1  Prerequisites For Installation

VAX GKS/0b V1.2 requires VMS V4.0 or later, or MicroVMS V4.0 or later.
The  GKS installation procedure tests for the version of VMS, and will
terminate with an error if the version of VMS is not V4.0 or later.

For MicroVAX systems, if the Program Development component is desired,
then  it  must  be  installed  before  installing GKS.  If the Program
Development component is installed at a later date,  then  VAX  GKS/0b
V1.2  must  be reinstalled.  However, VAX GKS/0b V1.2 may be installed
on a system without the Program Development component.

If  VAX  GKS/0b  V1.2  is  being  installed  on  a   MicroVMS/VSI   or
MicroVMS/VSII  configuation,  the  MicroVMS  Workstation Software V2.0
must be installed on your system before installing  VAX  GKS/0b  V1.2.
If  a version of the MicroVMS Workstation Software previous to V2.0 is
installed, the GKS installation will fail with the following  message:
%VMSINSTAL-E-BADWKS  Incompatible  MicroVMS  Workstation  software for
this version of VAX GKS/0b.  The solution to this error is to  install
V2.0  of  the  MicroVMS  Workstation  Software  and then reinstall VAX
GKS/0b V1.2.

VAX GKS/0b V1.2 will install without problem on a VAXstation I  or  II
without  any  version  of the MicroVMS Workstation Software.  However,
this software is required when running a GKS program  that  opens  the
VAXstation as a GKS workstation.  If the MicroVMS Workstation Software
V2.0 is  installed  at  a  later  date,  then  the  GKSTARTUP  command
procedure should be invoked to define the correct logical names.



1.2  Differences Between V1.1 And V1.2 Installation

1.2.1  Additional Question Asked During Installation

VAX GKS/0b V1.2 has an additional question.  After the messages:

           Beginning installation of VAX GKS V1.2 at <time>

     %VMSINSTAL-I-RESTORE, Restoring product saveset A...











                                                                Page 2


the following question will be asked:

     *Do you want to purge files replaced by this installation [YES]?

In general, answer YES unless:

         The files  for  the  previous  version  of  GKS  need  to  be
         retained.
     or
         VAX GKS/0b V1.2 is  being  installed  on  a  system  using  a
         cluster common system disk.  (The old GKS files can be purged
         after the GKSTARTUP.COM procedure is executed on each cluster
         node.)

After answering  this  question,  the  GKS  installation  proceeds  as
described in the installation guide.



1.2.2  ADA Language Definition File

VAX GKS/0b V1.2 has an additional entry  in  the  language  definition
file  prompt  so that the ADA definition file can be selected.  Follow
the instructions in  the  installation  procedure  on  how  to  choose
language definition files.



1.2.3  New Error Messages

%VMSINSTAL-E-UNXWKS Unexpected installed image for MicroVMS
Workstation Software found during installation of VAX GKS/0b

     This error will occur if an executable image file that  GKS  uses
     was  installed  with  the  INSTALL utility.  The solution to this
     error is to use the Install Utility as follows:

          $ RUN SYS$SYSTEM:INSTALL
          INSTALL> /DELETE SYS$LIBRARY:UISSHR.EXE
          INSTALL> /EXIT

     VAX GKS/0b V1.2 should then be reinstalled.  If you wish to  keep
     the old UISSHR.EXE file, answer NO to the question:

          *Do you want to purge files replaced by this installation [YES]?

     to make sure that the installation does not delete the file.


%VMSINSTAL-E-BADWKS Incompatible MicroVMS Workstation software for
this version of VAX GKS/0b

     This error will occur if VAX GKS/0b V1.2 is being installed on  a
     MicroVMS/VSI or MicroVMS/VSII configuation where a version of the
     MicroVMS Workstation Software previous to V2.0 is installed.  The








                                                                Page 3


     solution  to  this  error  is  to  install  V2.0  of the MicroVMS
     Workstation Software and then reinstall VAX GKS/0b V1.2.



1.3  Important Notes

VAX  GKS/0b  V1.2  should  be  installed  on   all   MicroVMS/VSI   or
MicroVMS/VSII  configurations  which  have  V2.0  of  the  Workstation
Software running.  VAX GKS/0b V1.1 WILL NOT run properly  on  MicroVMS
Workstation Software V2.0.

VAX GKS/0b V1.2 should be installed  on  all  VMS  and  MicroVMS  V4.2
systems  (or  later).   VAX  GKS/0b  V1.1 may terminate with an access
violation error when outputting text on a system running VMS  V4.2  or
later.  VAX GKS/0b V1.2 fixes this problem.



2  ENHANCEMENTS

2.1  New Systems Support

VAX GKS/0b V1.2 supports VMS (on VAX),  MicroVMS  (on  MicroVAX  I  or
MicroVAX  II), and MicroVMS/VSI (on VAXstation I) or MicroVMS/VSII (on
VAXstation II).  The GKS product is compatible across these systems.



2.2  New Language Support

VAX GKS/0b V1.2 supports the ADA programming language.  If  requested,
the  ADA  definitions file (GKSDEFS.ADA) will be placed in SYS$LIBRARY
during the installation.  It is the responsibility of the  application
programmer  to  compile  the  definitions  file  into  his/her private
program library.



2.3  New Device Support

VAX GKS/0b V1.2 supports the LA210 graphics printer.  The  workstation
type  for  the  LA210  is  GKS$K_LA210  (equal to a value of 31).  The
workstation attributes are identical  to  the  LA100  printer  (please
refer  to  Appendix  H  of the VAX GKS/0b Software Reference Guide for
additional information on the LA100).



3  RESTRICTIONS REMOVED











                                                                Page 4


3.1  Input Functions

The functions GKS$INIT_LOCATOR and GKS$INIT_STROKE will  now  properly
handler transformations other than transformation 0.



3.2  Inquiry Functions

The functions  GKS$INQ_DEF_STROKE_DATA  and  GKS$INQ_DEF_VALUATOR_DATA
now  return  the  proper  values  for  the  data  record  size, if the
specified data record size is less than 4 bytes.



3.3  FORTRAN Binding

The functions GQDST and GQDVL return  the  proper  size  of  the  data
record.



3.4  VAXstation I And VAXstation II

The VAXstation display list is no  longer  enabled  when  running  VAX
GKS/0b.   This  means  that  the graphical output images are no longer
stored and will be lost if a GKS$UPDATE_WS is executed or if the  size
of   the   workstation   viewport  is  changed  following  a  call  to
GKS$SET_WS_WINDOW or GKS$SET_WS_VIEWPORT.



4  NOTES AND RESTRICTIONS FOR VAX GKS/0B V1.2

4.1  Notes

4.1.1  GKS Definition Files

The constant for the "no choice" initial input value is corrected  for
the    language    definition    files.     The    new   constant   is
GKS$K_STATUS_NOCHOICE  instead  of  the   previous   GKS$K_NOCHOI   or
GKS$K_NOCHOICE.



4.1.2  FORTRAN Binding

For several  of  the  FORTRAN  binding  calls,  the  documentation  in
Appendix E of the "VAX GKS/0b Software Reference Guide" is incomplete.
The following information should be added to  descriptions  for  these
functions:

      o  GQDCH, GQDVL, and GQDVLS:  no data record is returned









                                                                Page 5


      o  GQDST, GQDSK, GQVLS:  INIPOS is 1

      o  GQSKS data record length is 5.




4.1.3  BASIC GKS Applications

Before calling GKS functions that return  string  values,  the  string
variable  passed  to  GKS  must  be  preallocated to the length of the
largest string which can  be  returned.   In  addition,  the  returned
string  length should be used to access the string information instead
of the value from the BASIC LEN function.  See the  BASIC  on  VAX/VMS
Systems manual for more detailed information.



4.1.4  VAXstation I And VAXstation II

4.1.4.1  VAXstation TEKTRONIX* 4014 Emulator

Most GKS input functions will not  work  on  the  Tektronix*  emulator
supplied  with the MicroVAX VAXstation I and VAXstation II because GKS
requires write through support.  Therefore, the Tektronix* emulator on
the  VAXstation  I  and VAXstation II is an unsupported device for VAX
GKS/0b V1.2.



4.1.4.2  Output And Attribute Functions

On the VAXstation I and II, the background color  of  the  workstation
viewport  will  be  the  value  of  color index 0 at the time that the
viewport is first created.  Thereafter, changing the  value  of  color
index 0 will have no effect on that viewport until its size is changed
following a call to GKS$SET_WS_WINDOW or GKS$SET_WS_VIEWPORT.



4.1.4.3  Choice Input

The order of the menu items in a Choice menu is the reverse of what it
was for VAX GKS/0b V1.1.  The order is now the same as for other OUTIN
devices supported by VAX GKS/0b V1.2, which puts choice string  number
1 at the top of the choice menu.



4.1.5  VAXstation II











                                                                Page 6


4.1.5.1  VSII With The VR260 Monitor

If you are running a  VSII  with  a  VR260  monitor,  the  VMS  SYSGEN
parameter TTY_DIAL should be set to 128.

If you are using the VR260 monitor with  the  VSII,  VAX  GKS/0b  V1.2
treats  the  maximum display surface size as if it were a VR100.  This
implies that a call to GKS$INQ_MAX_DS_SIZE returns values  as  if  the
display  were a VR100.  Since the device coordinate size of a VR100 is
greater than that of a VR260, if  an  application  uses  the  returned
values  to  set  the  workstation  viewport,  the  actual  size of the
viewport will be smaller than expected.  This  affect  occurs  because
the  VAXstation  software will shrink the given viewport to fit within
the physical size of the monitor while still  maintaining  the  aspect
ratio.   In  order  to  use  more  of  the  VR260 physical window, the
application should use the following maximum values for  the  size  of
the viewport:

    workstation viewport in device coordinates:  0.36 x 0.27,

    workstation viewport in raster units:  975 x 823.



4.2  Restrictions

4.2.1  Language Support

4.2.1.1  VAX ADA And Passing Arrays By Descriptor

VAX ADA version V1.1 does not create an array descriptor in  the  form
that  VAX GKS/0b expects.  This problem is found when VAX GKS requires
arrays to be passed by descriptor in functions such as  GKS$CELL_ARRAY
(for  a  complete list of functions that use array descriptors, please
refer to the "VAX GKS/0b Software Reference Guide" section 3.1.1)  The
error returned by VAX GKS/0b is GKS$_INV_ARRAY_DESC.  In order to work
around this problem, an array descriptor should  be  built  using  the
BUILDDESC  routine  described  in  section  3.1.1  of  the "VAX GKS/0b
Software Reference Guide".  This work around is needed until  the  VAX
ADA compiler is able to create the type of descriptor which VAX GKS/0b
expects.



4.2.2  Output And Attribute Functions

VAX GKS/0b provides  square  default  workstation  viewports  for  all
supported  devices.   The  GKS  standard  specifies  that  the default
viewport should be the  maximum  display  surface  size.   Application
programs should explicitly set the workstation viewport to the desired
size.

Certain very complicated fill areas which "fold  back"  on  themselves
and  lie  partially  within  the clipping rectangle, may be improperly
drawn on the VT125 and VT240.








                                                                Page 7


The bottom rows of pixels of cell arrays, drawn near the bottom of the
screen, may be drawn incorrectly on the VT125 and VT240.



4.2.3  Inquiry Functions

The functions GKS$INQ_PREDEF_COLOR_REP and  GKS$INQ_INPUT_DEV  do  not
translate a value of 0 for WSTYPE.  An explicit WSTYPE must be given.

The  GKS$INQ_PMARK_FAC  function  does  not  return  the   number   of
polymarker sizes.



4.2.4  Metafiles

Metafile  information  is  currently  interpreted  under  the   active
transformation.   A  metafile  should  be  interpreted  using  the NDC
transformation.  Since the NDC transformation can  be  represented  by
transformation  0,  the workaround for this is for the GKS application
to  set  the  active  transformation  to  0  before  interpreting  the
metafile, and restoring the previous transformation after all metafile
interpretation is completed.



4.2.5  VAXstation I And VAXstation II

A Cell Array may not completely fill up the cell rectangle  which  has
been specified.

Values for GKS$INQ_PIXEL_ARRAY_DIM when the size of the pixel array is
the entire screen and the raster units field of GKS$INQ_MAX_DS_SIZE do
not correspond.

The function GKS$INQ_TEXT_FAC does not list font  1  in  the  list  of
stroke precision fonts.  Font 1 is always present.

The function GKS$INQ_DEF_STRING_DATA returns the buffer size as 80 for
device number 2.  This should return information about the SMG encoded
string which is only 4 bytes long.



4.2.6  VT240

If the default text size is used, with the default transformation, and
text  is  output following input, only the top half of the text in the
next largest size is written to the  display.   This  will  occur  for
STRING  input,  echo  type 1; LOCATOR input, echo type 6; and VALUATOR
input, echo type 3.  This is due to a firmware problem in  the  VT240.
The  workaround  is  to  use  the  next  larger  size  text.  For more
information about these three precisions, refer  to  the  "VAX  GKS/0b
Software Reference Guide".








                                                                Page 8


The maximum display surface size on both the VT125 and VT240 is 768 by
480.   The VT240 has a horizontal resolution of 800, hence the extreme
right-hand side of the display surface is not accessible  through  VAX
GKS/0b.

If a VT240 has been setup with the reverse video option  enabled,  the
default  color  map  may  not  be  restored when VAX GKS/0b closes the
workstation.



4.2.7  LVP16

The function GKS$INQ_TEXT_EXTENT returns incorrect information for the
LVP16.    The   values   returned   for   text  extent  rectangle  and
concatenation point are invalid for character  and  string  precision.
Stroke precision may be used to ensure proper character placement.



5  INCOMPATIBILITIES WITH FUTURE VERSIONS OF VAX GKS

Due to changes in the GKS standard before it was adopted,  there  will
be  a  number  of incompatible changes between VAX GKS/0b V1.2 and the
next major release of VAX GKS/0b.  These changes will be made so  that
the  next  major release of VAX GKS/0b will conform to the adopted GKS
standard.   These  future  changes  are  listed  here  so   that   the
application  programmer may be aware that a GKS program may need to be
modified in order to run with the next major version of VAX GKS/0b.



5.1  Changes To The GKS Functional Descriptions

The following is a list of changes to  the  descriptions  of  the  GKS
functions:

     1.  Change in Device coordinates

         Device coordinates will have the  origin  in  the  lower-left
         corner.   In VAX GKS/0b V1.2 the VT125 and VT240 devices have
         the origin in the upper-left corner.  Moving  the  origin  to
         the  lower-left  for  these devices implies that the physical
         location of the echo areas for input on  these  devices  will
         move  unless  the  values  supplied  are  adjusted  for these
         changes.

     2.  Implementation Defined Values will be Negative

         VAX GKS has several types of implementation defined values --
         the values for:

             Text fonts > 1









                                                                Page 9


             Fill area style indexes
             VAX GKS specific error numbers (i.e. those >= 300)

         The values of these may be changed to negative numbers.

     3.  Text

         VAX GKS/0b V1.2 computes the magnitude of both  the  text  up
         and  base  vectors  as  the  text  height  multiplied  by the
         vertical window to viewport scale factor.  In  addition,  the
         text up vector and text base vector are always perpendicular.
         If the text expansion factor is 0.0, characters will be drawn
         using  the  nominal  aspect  ratio,  regardless  of  the  the
         normalization transformation.

         The final version of the ANSI  GKS  (X3.124)  specifies  that
         both  the  text  up  and text base vectors are subject to the
         normalization transformation.  A future version  of  VAX  GKS
         will  incorporate  this  change.   Please  note  that  if the
         normalization transformation aspect ratio is non-uniform, the
         resulting text may look compressed, expanded or even skewed.

     4.  Inquire Current Setting of Primitive Attributes

         The parameters in  the  GKS$INQ_PRIM_ATTB  function  will  be
         changed.   Pattern size will be replaced by pattern width and
         pattern height; character width and  character  base  vectors
         will be added; and current pick id will be removed.

     5.  Escape

         The GKS$ESCAPE function will have  additional  parameters  to
         handle an escape output data record.

     6.  GKS Error Numbers

         Some of the GKS standard error statuses have changed  values.
         The  messages  are the same, but the actual error numbers are
         different.

         Some functions  have  additional  error  checking  and  error
         messages to be reported.

     7.  Inquire Clipping

         GKS$INQ_CLIP will be changed so that the  clipping  rectangle
         will be an output parameter.

     8.  Initialize Choice

         GKS$INIT_CHOICE will  be  changed  so  that  it  includes  an
         additional parameter for the initial choice status.










                                                               Page 10


     9.  Request Choice

         GKS$REQUEST_CHOICE will be able to return a status  value  of
         "no choice" (GKS$K_STATUS_NOCHOICE).

    10.  Metafiles

         When interpreting a metafile item, NDC  space  will  be  used
         instead of the the current transformation.




5.2  Changes To The GKS FORTRAN Binding


The approved  FORTRAN  binding  included  many  differences  from  the
binding  from  which  VAX  GKS/0b  V1.2 is based.  For a list of these
changes, please refer to the article, "An Update on  GKS:   The  Final
Changes",  by  Thomas  Wright  in  the  January 1985 issue of COMPUTER
GRAPHICS (Volume 19, Number 1).













                                                               Page 11


6  SAMPLE APPLICATION WRITTEN IN ADA

This section lists the sample application as described in  Chapter  12
of  the  VAX  GKS/0b  Software  Reference Guide in the ADA programming
language.


with GKSDEFS;
use GKSDEFS;

procedure SAMPLE is
    
    subtype MONTH_RANGE is INTEGER range 1 .. 9;
    NUM_MONTHS : constant INTEGER := MONTH_RANGE'LAST
        - MONTH_RANGE'FIRST + 1;
    MONTHS : constant array  (1..12) of STRING (1..3) :=
             ("Jan", "Feb", "Mar", "Apr", "May", "Jun", 
              "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");

    SMALL_TEXT : constant := 0.02;
    LARGE_TEXT : constant := 0.05;
    ASF_FLAGS : constant INTEGER_ARRAY (1..13) :=
        (1 | 3 => 0, 2 | 4 .. 13 => 1);

-- Data to plot
    MARKX : constant FLOAT_ARRAY (MONTH_RANGE) := 
        ( 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0 );
    MARKY : constant FLOAT_ARRAY (MONTH_RANGE) := 
        ( 0.37, 0.5, 0.32, 0.8, 0.6, 0.7, 0.6, 0.3, 0.5 );
    BARS  : constant FLOAT_ARRAY (MONTH_RANGE) :=
        ( 0.1, 0.4, 0.29, 0.2, 0.55, 0.6, 0.4, 0.2, 0.34 );

-- Window sizes
    WINDOW_X_MAX : constant := 10.0;
    WINDOW_X_MIN : constant := -1.0;
    WINDOW_Y_MIN : constant := -0.1;
    WINDOW_Y_MAX : constant :=  1.0;

-- work station parameters
    TTN : constant STRING := "TT:";
    TYP : constant := 0;
    WSID : constant := 1;
    XFORM_NUMBER : constant := 1;

    XX, YY : FLOAT_ARRAY (1..4);
    TICKX, TICKY : FLOAT_ARRAY  (MONTH_RANGE);
    STATUS : INTEGER;

begin
    
-- Initialize GKS and a workstation
    GKS_OPEN_GKS (STATUS, TTN);
    GKS_OPEN_WS (STATUS, WSID, TTN, TYP);
    GKS_ACTIVATE_WS (STATUS, WSID);
    GKS_CLEAR_WS (STATUS, WSID, GKS_K_CLEAR_CONDITIONALLY);








                                                               Page 12



-- Set a world coordinate system window with an extra margin
    GKS_SET_WINDOW (STATUS, XFORM_NUMBER, WINDOW_X_MIN,
        WINDOW_X_MAX, WINDOW_Y_MIN, WINDOW_Y_MAX);
    GKS_SELECT_XFORM (STATUS, XFORM_NUMBER);

-- label chart with a text heading
    GKS_SET_TEXT_COLOR_INDEX (STATUS, 2);
    GKS_SET_TEXT_HEIGHT (STATUS, LARGE_TEXT);
    GKS_SET_TEXT_ALIGN (STATUS, GKS_K_TEXT_HALIGN_CENTER,
        GKS_K_TEXT_VALIGN_BOTTOM);
    GKS_TEXT (STATUS, 5.0, 0.9, "Monthly Summary");

-- Draw the axis
    GKS_SET_ASF (STATUS, ASF_FLAGS);
    GKS_SET_PLINE_INDEX (STATUS, 3);
    XX (1) :=  0.0;
    YY (1) :=  0.0;
    XX (2) := 10.0;
    YY (2) :=  0.0;
    GKS_POLYLINE (STATUS, 2, XX, YY);
    XX (2) :=  0.0;
    YY (2) :=  0.9;
    GKS_POLYLINE (STATUS, 2, XX, YY);

-- Place tick marks on X axis
    GKS_SET_PMARK_TYPE (STATUS, GKS_K_MARKERTYPE_PLUS);
    for MONTH in MONTH_RANGE loop
        TICKX (MONTH) := FLOAT (MONTH);
        TICKY (MONTH) := 0.0;
    end loop;
    GKS_POLYMARKER (STATUS, NUM_MONTHS, TICKX, TICKY);

-- Place tick marks on Y axis
    for MONTH in MONTH_RANGE loop
        TICKX (MONTH) := 0.0;
        TICKY (MONTH) := FLOAT (MONTH) / 10.0;
    end loop;
    GKS_POLYMARKER (STATUS, NUM_MONTHS, TICKX, TICKY);

-- Label the months
    GKS_SET_TEXT_HEIGHT (STATUS, SMALL_TEXT);
    GKS_SET_TEXT_FONTPREC (STATUS, 1,
        GKS_K_TEXT_PRECISION_STRING);
    GKS_SET_TEXT_ALIGN (STATUS, GKS_K_TEXT_HALIGN_LEFT,
        GKS_K_TEXT_VALIGN_BASE);

-- step through the month labels
    for MONTH in MONTH_RANGE loop
        GKS_TEXT (STATUS, FLOAT (MONTH), -0.03, MONTHS (MONTH));
    end loop;
    
-- label the axes with text
    GKS_SET_TEXT_HEIGHT (STATUS, LARGE_TEXT);
    GKS_SET_TEXT_SPACING (STATUS, 0.5);








                                                               Page 13


    GKS_SET_TEXT_ALIGN (STATUS, GKS_K_TEXT_HALIGN_LEFT,
        GKS_K_TEXT_VALIGN_HALF);
    GKS_SET_TEXT_PATH (STATUS, GKS_K_TEXT_PATH_DOWN);
    GKS_SET_TEXT_FONTPREC (STATUS, 9,
        GKS_K_TEXT_PRECISION_STROKE);
    GKS_TEXT (STATUS, -0.7, 0.5, "Units sold");

-- Draw the bars in different hatch styles, then outline them
    GKS_SET_FILL_INT_STYLE (STATUS, GKS_K_INTSTYLE_HATCH);
    for MONTH in MONTH_RANGE loop
        XX (1) := FLOAT (MONTH) - (0.7/2.0);
        XX (2) := XX (1);
        XX (3) := XX (2) + (0.7);
        XX (4) := XX (3);
        YY (1) := 0.0;
        YY (2) := BARS (MONTH);
        YY (3) := YY (2);
        YY (4) := 0.0;

        -- Set the hatch index to next number
        GKS_SET_FILL_STYLE_INDEX (STATUS, MONTH);

        GKS_FILL_AREA (STATUS, 4, XX, YY);
        GKS_POLYLINE (STATUS, 4, XX, YY);
    end loop;

-- Draw the polymarkers
    GKS_SET_PMARK_TYPE (STATUS, GKS_K_MARKERTYPE_DIAGONAL_CROSS);
    GKS_POLYMARKER (STATUS, NUM_MONTHS, MARKX, MARKY);

-- Draw the polyline with wide lines
    GKS_SET_PLINE_LINEWIDTH (STATUS, 5.0);
    GKS_POLYLINE (STATUS, NUM_MONTHS, MARKX, MARKY);

-- Close the workstation and GKS
    GKS_DEACTIVATE_WS (STATUS, WSID);
    GKS_CLOSE_WS (STATUS, WSID);
    GKS_CLOSE_GKS (STATUS);
    
end SAMPLE;










* TEKTRONIX is a trademark of TEKTRONIX, Inc.
